#pragma once
#ifndef GetEnvironmentCommon_H
#define GetEnvironmentCommon_H

// 头文件引用
// 官方库
#include <string>
#include <mutex>


// 模块 - 安装环境
int CheckDevEnvironmentA(std::string Commands, std::string StandardMessage, int CheckDigit); // 点击安装按钮前，检查用户是否有目标环境的安装条件
int CheckDevEnvironmentB(std::string Product_FileName, std::string Subdirectory, std::string RelativePath, std::string Product_MD5_Data); // 点击安装按钮后，检查用户是否有目标环境的安装条件
bool getDevEnvironment(int GetInstallPosition, std::string RelativePath); // 尝试解压解压与目标环境相关的文件，并获得是否执行成功的返回值
bool OrderlinessSetEnvironmentVariables_1(int GetInstallPosition, std::wstring InstallRelativePath_1); // 条理性设置环境变量 - 设置 1 个环境变量
bool OrderlinessSetEnvironmentVariables_2(int GetInstallPosition, std::wstring InstallRelativePath_1, std::wstring InstallRelativePath_2); // 条理性设置环境变量 - 设置 2 个环境变量


// 指令 - MinGW 指令提取
void CMD_MinGW_CDE_A_1(float& ScalingRatio, bool& MinGW_CDE_A_1, bool& MinGW_CDE_B_0, bool& MinGW_UnZip_Wait,
    bool& MinGW_CDE_CF_1, bool& MinGW_CDE_CF_0, std::mutex& mingwMutex, bool& MinGW_In_UnZip_0,
    bool& MinGW_CDE_B_3, bool& MinGW_CDE_B_4);
void CMD_MinGW_CDE_A_2(float& ScalingRatio, bool& MinGW_CDE_A_2);
void CMD_MinGW_CDE_A_3(float& ScalingRatio, bool& MinGW_CDE_A_3);
void CMD_MinGW_CDE_A_4(float& ScalingRatio, bool& MinGW_CDE_A_4);
void CMD_MinGW_CDE_B_0(float& ScalingRatio, bool& MinGW_CDE_B_0);
void CMD_MinGW_CDE_B_3(float& ScalingRatio, bool& MinGW_CDE_B_3);
void CMD_MinGW_CDE_B_4(float& ScalingRatio, bool& MinGW_CDE_B_4);
void CMD_MinGW_In_UnZip_0(float& ScalingRatio, bool& MinGW_In_UnZip_0);
void CMD_MinGW_CDE_CF_0(float& ScalingRatio, bool& MinGW_CDE_CF_0);
void CMD_MinGW_CDE_CF_1(float& ScalingRatio, bool& MinGW_CDE_CF_1);
void CMD_MinGW_UnZip_Wait(float& ScalingRatio);

// 指令 - Python 指令提取
void CMD_Python_CDE_A_1(float& ScalingRatio, bool& Python_CDE_A_1, bool& Python_CDE_B_0, bool& Python_UnZip_Wait,
    bool& Python_CDE_CF_1, bool& Python_CDE_CF_0, std::mutex& PythonMutex, bool& Python_In_UnZip_0,
    bool& Python_CDE_B_3, bool& Python_CDE_B_4);
void CMD_Python_CDE_A_2(float& ScalingRatio, bool& Python_CDE_A_2);
void CMD_Python_CDE_A_3(float& ScalingRatio, bool& Python_CDE_A_3);
void CMD_Python_CDE_A_4(float& ScalingRatio, bool& Python_CDE_A_4);
void CMD_Python_CDE_B_0(float& ScalingRatio, bool& Python_CDE_B_0);
void CMD_Python_CDE_B_3(float& ScalingRatio, bool& Python_CDE_B_3);
void CMD_Python_CDE_B_4(float& ScalingRatio, bool& Python_CDE_B_4);
void CMD_Python_In_UnZip_0(float& ScalingRatio, bool& Python_In_UnZip_0);
void CMD_Python_CDE_CF_0(float& ScalingRatio, bool& Python_CDE_CF_0);
void CMD_Python_CDE_CF_1(float& ScalingRatio, bool& Python_CDE_CF_1);
void CMD_Python_UnZip_Wait(float& ScalingRatio);

// 指令 - Java 指令提取
void CMD_Java_CDE_A_1(float& ScalingRatio, bool& Java_CDE_A_1, bool& Java_CDE_B_0, bool& Java_UnZip_Wait,
    bool& Java_CDE_CF_1, bool& Java_CDE_CF_0, std::mutex& JavaMutex, bool& Java_In_UnZip_0,
    bool& Java_CDE_B_3, bool& Java_CDE_B_4);
void CMD_Java_CDE_A_2(float& ScalingRatio, bool& Java_CDE_A_2);
void CMD_Java_CDE_A_3(float& ScalingRatio, bool& Java_CDE_A_3);
void CMD_Java_CDE_A_4(float& ScalingRatio, bool& Java_CDE_A_4);
void CMD_Java_CDE_B_0(float& ScalingRatio, bool& Java_CDE_B_0);
void CMD_Java_CDE_B_3(float& ScalingRatio, bool& Java_CDE_B_3);
void CMD_Java_CDE_B_4(float& ScalingRatio, bool& Java_CDE_B_4);
void CMD_Java_In_UnZip_0(float& ScalingRatio, bool& Java_In_UnZip_0);
void CMD_Java_CDE_CF_0(float& ScalingRatio, bool& Java_CDE_CF_0);
void CMD_Java_CDE_CF_1(float& ScalingRatio, bool& Java_CDE_CF_1);
void CMD_Java_UnZip_Wait(float& ScalingRatio);

// 指令 - GoLang 指令提取
void CMD_GoLang_CDE_A_1(float& ScalingRatio, bool& GoLang_CDE_A_1, bool& GoLang_CDE_B_0, bool& GoLang_UnZip_Wait,
    bool& GoLang_CDE_CF_1, bool& GoLang_CDE_CF_0, std::mutex& GoLangMutex, bool& GoLang_In_UnZip_0,
    bool& GoLang_CDE_B_3, bool& GoLang_CDE_B_4);
void CMD_GoLang_CDE_A_2(float& ScalingRatio, bool& GoLang_CDE_A_2);
void CMD_GoLang_CDE_A_3(float& ScalingRatio, bool& GoLang_CDE_A_3);
void CMD_GoLang_CDE_A_4(float& ScalingRatio, bool& GoLang_CDE_A_4);
void CMD_GoLang_CDE_B_0(float& ScalingRatio, bool& GoLang_CDE_B_0);
void CMD_GoLang_CDE_B_3(float& ScalingRatio, bool& GoLang_CDE_B_3);
void CMD_GoLang_CDE_B_4(float& ScalingRatio, bool& GoLang_CDE_B_4);
void CMD_GoLang_In_UnZip_0(float& ScalingRatio, bool& GoLang_In_UnZip_0);
void CMD_GoLang_CDE_CF_0(float& ScalingRatio, bool& GoLang_CDE_CF_0);
void CMD_GoLang_CDE_CF_1(float& ScalingRatio, bool& GoLang_CDE_CF_1);
void CMD_GoLang_UnZip_Wait(float& ScalingRatio);



#endif // !GetEnvironmentCommon_H
